import { authService } from '../../services/auth'
import { auth } from '../../utils/auth'

Page({
  data: {
    canIUseGetUserProfile: false,
  },

  onLoad() {
    if (wx.getUserProfile) {
      this.setData({
        canIUseGetUserProfile: true
      })
    }
  },

  // 处理登录逻辑
  async handleLogin() {
    try {
      // 1. 先获取用户信息
      const { userInfo } = await wx.getUserProfile({
        desc: '用于完善会员资料', // 声明获取用户个人信息后的用途
        lang: 'zh_CN'
      })
      
      console.log('获取到的用户信息:', userInfo)

      // 2. 获取登录code
      const { code } = await wx.login()
      console.log('获取到登录code:', code)
      
      if (!code) {
        wx.showToast({
          title: '获取code失败',
          icon: 'none'
        })
        return
      }

      // 3. 发送code和用户信息到后端
      const res = await authService.login(code)
      console.log('登录接口返回:', res)
      
      // 4. 保存token和用户信息
      auth.setToken(res.token)
      auth.setUserInfo(res.userInfo)

      // 5. 更新用户信息到后端
      await authService.updateUserInfo({
        nickName: userInfo.nickName,
        avatarUrl: userInfo.avatarUrl
      })

      // 6. 登录成功
      this.loginSuccess()
    } catch (error) {
      console.error('登录失败:', error)
      if (error.errMsg && error.errMsg.includes('getUserProfile:fail')) {
        wx.showToast({
          title: '需要授权才能使用',
          icon: 'none',
          duration: 2000
        })
      } else {
        wx.showToast({
          title: `登录失败: ${error.message || '请稍后重试'}`,
          icon: 'none',
          duration: 2000
        })
      }
    }
  },

  // 获取用户详细信息
  async getUserProfile() {
    try {
      console.log('开始获取用户信息')
      // 获取用户信息
      const { userInfo } = await wx.getUserProfile({
        desc: '用于完善用户资料',
        lang: 'zh_CN'
      })
      
      console.log('获取到的用户信息:', userInfo)
      
      // 更新到后端
      const updatedUser = await authService.updateUserInfo(userInfo)
      console.log('更新用户信息返回:', updatedUser)
      
      // 保存用户信息
      auth.setUserInfo(updatedUser)
      
      this.loginSuccess()
    } catch (error) {
      console.error('获取用户信息失败:', error)
      wx.showToast({
        title: error.errMsg || '获取用户信息失败',
        icon: 'none',
        duration: 2000
      })
    }
  },

  // 登录成功处理
  loginSuccess() {
    wx.showToast({
      title: '登录成功',
      icon: 'success',
      duration: 1500,
      success: () => {
        // 使用switchTab而不是navigateTo，因为首页是tab页面
        wx.switchTab({
          url: '/pages/index/index'
        })
      }
    })
  }
}) 